package vue;
import java.awt.Color;
import java.io.File;
import java.io.IOException;
import java.util.Vector;
import javax.swing.*;

import modele.*;
import vue.panneau1.Zone1;
import vue.panneau2.Zone2;
import vue.panneau2.controle.NouveauResultatPointListener;
import vue.panneau3.Zone3;
import vue.util.Point;

public class Onglet extends JDesktopPane implements NouveauResultatPointListener
{
	private static final long serialVersionUID = 1L;
	private File fichier;
	private int numero;
	private Zone1 z1;
	private Zone2 z2;
	private Zone3 z3;
	
	public Onglet(File fichier,boolean is3D)
	{	
		this.fichier = fichier;
		
		z2 = new Zone2();
		z3 = new Zone3(is3D);
		z1 = new Zone1(z2,z3,is3D);
		
		z2.addNouveauResultatPointListener(this);		
		
		z1.setVisible(true);
		z2.setVisible(true);
		z3.setVisible(true);	
		
		this.add(z1);
		this.add(z2);
		this.add(z3);
		
		this.setBackground(Color.LIGHT_GRAY);		
	}
	
	public Onglet(int numero,boolean is3D)
	{
		this.numero = numero;
		
		z2 = new Zone2();
		z3 = new Zone3(is3D);
		z1 = new Zone1(z2,z3,is3D);
		
		z2.addNouveauResultatPointListener(this);		
		
		z1.setVisible(true);
		z2.setVisible(true);
		z3.setVisible(true);	
		
		this.add(z1);
		this.add(z2);
		this.add(z3);
		
		this.setBackground(Color.LIGHT_GRAY);		
	}
	
	public File getFichier()
	{
		return fichier;
	}
	
	public int getNumero()
	{
		return numero;
	}
	
	public Zone1 getZone1()
	{
		return z1;
	}
	
	public Zone2 getZone2()
	{
		return z2;
	}
	
	public Zone3 getZone3()
	{
		return z3;
	}
	
	public void charger2D(Vector<Equation2D> listeEquations,FonctionAOptimiser2D fct2D)
	{
		z1.getInterface2DZone1().charger2D(listeEquations,fct2D);
	}

	public void charger3D(Vector<Equation3D> listeEquations,FonctionAOptimiser3D fct3D)
	{
		z1.getInterface3DZone1().charger3D(listeEquations,fct3D);	
	}
	
	public void enregistrer(File nomfic)
	{
		File fic = nomfic;
		
		if (!nomfic.getName().endsWith(".spx"))
		{
			fic = new File(nomfic.getPath() + ".spx");
		}
		
		if(nomfic.exists()) 
		{
			nomfic.delete();
		}
		
		try
		{
			fic.createNewFile();
		}
		catch(IOException e) 
		{
			e.printStackTrace();
		}   
		
		// enregistrement du systeme de simplexe 2D ou 3D  
	}
	
	public void changerResultatPoint(float x1,float x2,int numeroMatrice,String libelle) 
	{	
		z3.getModele().setPoint2DUnique(new Point(x1,x2,numeroMatrice,libelle));
	}
}
